Typical file caching methods include a cache receiving a file from a file server, and storing the entire file. Later when a client desires the file, instead of serving the file from the file server, the file is served from the cache. Because the cache is typically a server that is closer to the client, or has higher bandwidth than the file server, the file is served to the client quickly from the cache.
This can be understood with reference to FIG. 1, which is a schematic illustration of an exemplary architecture of a network 10 having an origin server 11 and a number of caches 12-16. Clients 17-19 are configured to receive files and/or streaming data from the origin server 11 or the caches 12-16.
In order to reduce the load on the origin server 11 and to save bandwidth in the delivery network 10, some of the content is stored in caches 12-16 closer to the end users 17-19. It is desirable to push these caches as close to the end user as possible.
For example, mobile network architectures generally comprise a Core Network (CN), to which are attached a number of radio access networks (RANs) in which terminals are connected to radio base stations (RBSs). The terminals may move and as they move they may be connected wirelessly to different RBSs. The transmission links between the RBSs and the rest of the network are usually rented and limited in capacity. One way of reducing the demands on these links is to use caching and, as described above, caching should preferably take place as close to the terminals as possible to minimize the need for transmission.
One problem with caching in the RAN (with the cache being a part of the RBS or any other RAN node) is that each cache will receive traffic from only a small population of terminals. In general, the content stored by a cache will be the content which has been requested by the end-users. If the population using the cache is small, the volume of cached content stored in that cache is small. Statistically, the probability that someone else wants to download the same content from that cache, i.e. the “cache hit rate”, decreases with a smaller population. One large cache for a large population is therefore statistically more efficient than many small caches serving different smaller subsets of the population.
One way of addressing this problem is to generate a large “virtual” cache out of many small ones in the RBSs by copying content between the caches. This means that each small cache stores content from a large population (detected and cached by the other small caches), and this increases the local hit rate for popular content. This “pre-loading” of a cache can be seen as a form of predictive caching where the predictions are based on users in other caches.
Inevitably, this will result in duplication of content across many of the small caches, and the price to be paid is that the total storage size required by all of small caches together will increase. In addition, the transferred volume of data between the caches increases as the content is distributed. If the bandwidth between the caches is restricted, the additionally transferred data increases the load and may eventually cause congestion. Methods that can help to solve pooling and content distribution in a resource limited network are thus of importance.